#include <iostream>
#include <unordered_map>
#include <vector>
using namespace std;
int n, x;
vector<vector<int>> vertex;
unordered_map<int, int> nums;

// 获取以编号为 root 的结点为根的字数的连通块的数量，并记录到 mp 里
int get(int root, int parent) {
    if (nums.count(root)) return nums[root];
    int ret = 1;
    for (int c : vertex[root]) {
        if (c == parent) continue;
        ret += get(c, root);
        if (c % 2 == root % 2) ret--;
    }
    nums[root] = ret;
    return ret;
}

int main() {
    cin >> n >> x;
    vertex.resize(n + 1, vector<int>());
    int u, v;
    for (int i = 0; i < n - 1; i++) {
        cin >> u >> v;
        vertex[u].emplace_back(v);
        vertex[v].emplace_back(u);
    }
    int ans = 0;
    get(x, -1);

    // 求所有子树的连通块之和
    for (int i = 1; i <= n; i++) { ans += nums[i]; }
    cout << ans << endl;
    return 0;
}

/*
input
5 3
1 2
1 3
3 4
5 1

output
8
*/